﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace HMS
{
    public partial class ucTinhthanh : UserControl
    {
        private string sGetID;
        private SqlConnection con = new SqlConnection(FRM_Manhinhchinh.sConn);
        private SqlDataAdapter daLoadCity, dataAp;
        private int iIndex;
        private bool bUpdate, bCheck;
        private List<string> list;
        private SqlCommand cmd1, cmd2;

        private DataTable tbLoadCity, dataTable;
        public ucTinhthanh()
        {
            InitializeComponent();
            load_data();

        }
        public void load_data()
        {
            daLoadCity = new SqlDataAdapter("select City_ID , City_Name, City_Status from tblCity", con);
            tbLoadCity = new DataTable();
            daLoadCity.Fill(tbLoadCity);
            gridControl1.DataSource = tbLoadCity;
        }// end load_data

        public DataTable GetDataTable(string sql)
        {
            // Tạo dataApdapter, thực hiện câu lệnh query
            dataAp = new SqlDataAdapter(sql, con);
            // Đổ dữ liệu vào DataTable
            dataTable = new DataTable();
            dataAp.Fill(dataTable);
            return dataTable;
        }
        public void setdata()
        {
            iIndex = gridView1.FocusedRowHandle;
            sGetID = gridView1.GetRowCellValue(iIndex, "City_ID").ToString();

            string sSQl = " select City_ID, City_Name, City_Status from tblCity where City_ID = '" + sGetID + "'";
            GetDataTable(sSQl);

            //Gán text cho textbox
            txtMatinhthanh.Text = dataTable.Rows[0]["City_ID"].ToString();
            txtTentinhthanh.Text = dataTable.Rows[0]["City_Name"].ToString();
            // Đọc từ DB set true, false cho nút check "Kích hoạt"
            if (dataTable.Rows[0]["City_Status"].ToString() == "True")
                ckKichhoat.Checked = true;
            else ckKichhoat.Checked = false;
        }

        private void clear_Contents()
        {
            txtMatinhthanh.Text = null;
            txtTentinhthanh.Text = null;
            ckKichhoat.Checked = false;

        }
        private void btnThemdiadiem_Click(object sender, EventArgs e)
        {

            txtMatinhthanh.Text = NextID();
            txtTentinhthanh.Enabled = true;
            ckKichhoat.Enabled = true;
            bUpdate = false;
            clear_Contents();
            btnLuu.Enabled = true;
            btnHuy.Enabled = true;
        }

        private void btnCapnhat_Click(object sender, EventArgs e)
        {
            setdata();
            txtMatinhthanh.Enabled = false;
            txtTentinhthanh.Enabled = true;
            bUpdate = true;
            ckKichhoat.Enabled = true;
            btnLuu.Enabled = true;
            btnHuy.Enabled = true;
        }

        private void gridControl1_Click(object sender, EventArgs e)
        {
            // enable button
            btnHuy.Enabled = false;
            txtTentinhthanh.Enabled = false;
            txtMatinhthanh.Enabled = false;
            ckKichhoat.Enabled = false;
            btnLuu.Enabled = false;
            setdata();
        }
        private string NextID()
        {
            GetDataTable("select max(City_ID) as City_ID from tblCity");
            string MaTP = dataTable.Rows[0]["City_ID"].ToString();
            int iMaTP = int.Parse(MaTP) + 1;
            string zeroNumber = "";
            for (int i = 0; i < 3; i++)
                if (iMaTP < Math.Pow(10, i))
                {
                    for (int j = 0; j <= 3 - i; i++)
                        zeroNumber += "0";
                    return zeroNumber + iMaTP.ToString();
                }// end if
            return iMaTP.ToString();
        }
        private bool Check_City(string s)
        {
            string sql = "select city_name from tblcity where city_name = '" + s + "'";
            SqlCommand cmdCheck = new SqlCommand(sql, con);
            con.Open();
            SqlDataReader dr;
            dr = cmdCheck.ExecuteReader();
            if (dr.Read() == true) bCheck = false;
            else bCheck = true;
            con.Close();
            return bCheck;
        }// end

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (txtTentinhthanh.Text == "")
            {
                MessageBox.Show("Vui lòng nhập dữ liệu vào ô trống!", "Thông báo!", MessageBoxButtons.OK);
            }
            else
            {
                // Khai báo biến
                list = new List<string>();
                string sMaTP = txtMatinhthanh.Text,
                        sTenTP = txtTentinhthanh.Text,
                        sAcc;
                // Trạng thái là Lưu người dùng hay Tạo người dùng
                switch (bUpdate)
                {
                    // Trạng thái tạo mới
                    case false:
                        SqlConnection con1 = new SqlConnection(FRM_Manhinhchinh.sConn); // Tạo kết nối DB
                        if (ckKichhoat.Checked == true) sAcc = "True";
                        else sAcc = "False";
                        string sCmdInsertCity = "insert into tblCity values ('" + "','',N'" + sTenTP + "','" + sAcc + "')";
                        if (Check_City(sTenTP) == true)
                        {
                            con1.Open(); // Mở kết nối DB
                            cmd1 = new SqlCommand(sCmdInsertCity, con1); // Câu lệnh Insert dữ liệu vào DB                    
                            cmd1.ExecuteNonQuery(); // Thực thi lệnh SqlCommand

                            con1.Close(); // Đóng kết nối DB
                            MessageBox.Show("Tạo mới thành phố thành công !");
                            load_data(); // Load lại data lên gridControl
                        }
                        else MessageBox.Show("Thành phố đã tồn tại !");
                        break;
                    //Trạng thái cập nhật.
                    case true:
                        SqlConnection con2 = new SqlConnection(FRM_Manhinhchinh.sConn); // Tạo kết nối DB
                        if (ckKichhoat.Checked == true) sAcc = "True";
                        else sAcc = "False";
                        string sCmdUpdateClinic = "update tblCity set City_Name =N'" +
                            sTenTP + "', City_Status = '" + sAcc
                            + "' where City_ID = '" + sMaTP + "'";

                        con2.Open(); // Mở kết nối DB
                        cmd2 = new SqlCommand(sCmdUpdateClinic, con2); // Câu lệnh Insert dữ liệu vào DB                    
                        cmd2.ExecuteNonQuery(); // Thực thi lệnh SqlCommand

                        con2.Close(); // Đóng kết nối DB
                        MessageBox.Show("Cập nhật thành phố thành công !");
                        load_data(); // Load lại data lên gridControl

                        break;
                }
            }
        }
        private void btnHuy_Click(object sender, EventArgs e)
        {
            //clear_Contents();
            //btnLuu.Enabled = true;
            if (bUpdate == false)
            {
                DialogResult dr = MessageBox.Show("Bạn chắc chắn muốn hủy thao tác này ?", "Thông báo", MessageBoxButtons.YesNo);
                if (dr == DialogResult.Yes) btnThemdiadiem_Click(null, null);
                else return;

            }// end if
            else
            {
                // Kiểm tra dữ liệu có thay đổi chưa
                DialogResult dr = MessageBox.Show("Bạn chắc chắn muốn hủy thao tác này ?", "Thông báo", MessageBoxButtons.YesNo);
                if (dr == DialogResult.Yes) btnCapnhat_Click(null, null);
                else return;

            }// end else
        }

        private void txtTentinhthanh_KeyPress(object sender, KeyPressEventArgs e)
        {
            //chi cho phép nhập chữ cái
            if (!char.IsControl(e.KeyChar) && char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
            }
        }
        

    }
}
